package models

import (
	"time"
)

type Spot struct {
	ID   string `json:"id"`
	MID  string `json:"mid"`
	Line int    `json:"line"`
	Pos  int    `json:"pos"`
}

type Note struct {
	MID     string `json:"mid"`
	S       string `json:"s"`
	E       string `json:"e"`
	Section int    `json:"section"`
	Scope   int    `json:"scope"`
	ModTime string `json:"modtime"`
}

type NoteForm struct {
	// Mat     Mat    `json:"mat"`
	Mat
	MID     string `json:"mid"`
	S       Spot   `json:"s"`
	E       Spot   `json:"e"`
	Section int    `json:"section"`
	Scope   int    `json:"scope"`
	ModTime string `json:"modtime"`

	Author    string
	Uploader  string
	Authors   []Person `json:"authors"`
	Uploaders []Person `jons:"uploaders"`
	Tags      []Tag    `json:"tags"`
}

type ONote struct {
	ID      int64     `json:"id"`
	Modtime time.Time `json:"modtime"`
	Kind    int       `json:"kind"`
	Scope   int       `json:"scope"`
	Format  int       `json:"format"`
	PID     string    `json:"pid"`
	MID     string    `json:"mid"`
	Line    int       `json:"line"`
	Spos    int       `json:"spos"`
	Epos    int       `json:"epos"`
	Content string    `json:"content"`
	Value   int       `json:"value"`
}

type NoteCard struct {
	ONote

	PName string `json:"pname"` // Person Name
}

type NoteKind int

const (
	NoteKindStar NoteKind = iota
	NoteKindNote
	NoteKindIntro
	NoteKindPhonetics
	NoteKindReference
	NoteKindTranslation
	NoteKindLecture
	NoteKindComment
)

type NoteFormat int

const (
	NoteFormatNumber NoteFormat = iota
	NoteFormatText
	NoteFormatLink
	NoteFormatImage
	NoteFormatAudio
	NoteFormatVideo
)

type Section struct {
	ID    int    `json:"id"`
	Name  string `json:"name"`
	Scope int    `json:"scope"`
	Ord   int    `json:"ord"`
}
